package model

type GetGoodsListResponse struct {
	CommonResponse
	Data struct {
		List GoodsListData `json:"list"`
	} `json:"data"`
}

type GoodsListData struct {
	CommonPageResponse
	Data []GoodsItem `json:"data"`
}

type SaveGoodsInfoReq struct {
	// GoodsId 商品ID，编辑时必填
	GoodsId int64     `json:"goodsId,string"`
	Form    GoodsInfo `json:"form"`
}

type GoodsInfo struct {
	// GoodsType 商品类型 10实物商品
	GoodsType int64 `json:"goods_type"`
	// SpecType 商品规格类型 10-单规格 20-多规格
	SpecType int64 `json:"spec_type"`

	// IsRestrict 是否限购(1限购 0不限制)
	IsRestrict int64 `json:"is_restrict"`

	// IsEnableGrade 是否开启会员折扣(1开启 0关闭)
	IsEnableGrade int64  `json:"is_enable_grade"`
	GoodsName     string `json:"goods_name"`

	// ImagesIDS 商品图片ID列表，最多10张，第一张为主图
	ImagesIDS []int64 `json:"imagesIds"`
	GoodsNo   string  `json:"goods_no"`

	// Status 商品状态 10-上架 20-下架
	Status int64 `json:"status"`

	// Sort 商品排序 数字越小越靠前
	Sort        int     `json:"sort"`
	GoodsPrice  float64 `json:"goods_price"`
	StockNum    int64   `json:"stock_num"`
	GoodsWeight int64   `json:"goods_weight"`

	// DeductStockType 扣库存方式 10-下单扣库存 20-付款扣库存
	DeductStockType int64 `json:"deduct_stock_type"`

	// Content 商品详情 富文本内容
	Content string `json:"content"`

	// ServiceIDS 服务与承诺的ID列表
	ServiceIDS []int64 `json:"serviceIds"`

	// SalesInitial 商品初始销量
	SalesInitial int `json:"sales_initial"`

	// IsPointsGift	是否开启积分赠送(1开启 0关闭)
	IsPointsGift int64 `json:"is_points_gift"`

	// IsPointsDiscount 是否允许使用积分抵扣(1允许 0不允许)
	IsPointsDiscount int64 `json:"is_points_discount"`

	// IsIndDeliveryType 实物商品的配送方式 0系统默认 1单独配置
	IsIndDeliveryType int64 `json:"is_ind_delivery_type"`

	// IsAloneGrade 会员折扣设置(0默认等级折扣 1单独设置折扣)
	IsAloneGrade int64 `json:"is_alone_grade"`
	// DeliveryType 配送方式 10快递配送
	DeliveryType []int64 `json:"delivery_type"`

	// DeliveryID 运费模板ID
	DeliveryID  int64    `json:"delivery_id"`
	SpecData    SpecData `json:"specData"`
	CategoryIDS []int64  `json:"categoryIds"`
}

type GetGoodsInfoResponse struct {
	CommonResponse
	Data GoodsInfoData `json:"data"`
}

type GoodsInfoData struct {
	GoodsInfo GoodsItem `json:"goodsInfo"`
}

type GoodsItem struct {
	GoodsID               int64            `json:"goods_id"`
	GoodsType             int64            `json:"goods_type"`
	GoodsName             string           `json:"goods_name"`
	GoodsNo               string           `json:"goods_no"`
	VideoID               int64            `json:"video_id"`
	VideoCoverID          int64            `json:"video_cover_id"`
	SellingPoint          string           `json:"selling_point"`
	SpecType              int64            `json:"spec_type"`
	GoodsPriceMin         string           `json:"goods_price_min"`
	GoodsPriceMax         string           `json:"goods_price_max"`
	LinePriceMin          string           `json:"line_price_min"`
	LinePriceMax          string           `json:"line_price_max"`
	StockTotal            int64            `json:"stock_total"`
	DeductStockType       int64            `json:"deduct_stock_type"`
	IsRestrict            int64            `json:"is_restrict"`
	RestrictTotal         int64            `json:"restrict_total"`
	RestrictSingle        int64            `json:"restrict_single"`
	Content               string           `json:"content"`
	SalesInitial          int64            `json:"sales_initial"`
	SalesActual           int64            `json:"sales_actual"`
	DeliveryID            int64            `json:"delivery_id"`
	IsPointsGift          int64            `json:"is_points_gift"`
	IsPointsDiscount      int64            `json:"is_points_discount"`
	IsAlonePointsDiscount int64            `json:"is_alone_points_discount"`
	PointsDiscountConfig  string           `json:"points_discount_config"`
	IsEnableGrade         int64            `json:"is_enable_grade"`
	IsAloneGrade          int64            `json:"is_alone_grade"`
	AloneGradeEquity      []interface{}    `json:"alone_grade_equity"`
	IsIndDeliveryType     int64            `json:"is_ind_delivery_type"`
	DeliveryType          []int64          `json:"delivery_type"`
	Status                int64            `json:"status"`
	Sort                  int64            `json:"sort"`
	IsDelete              int64            `json:"is_delete"`
	StoreID               int64            `json:"store_id"`
	CreateTime            string           `json:"create_time"`
	UpdateTime            string           `json:"update_time"`
	GoodsImages           []Image          `json:"goods_images"`
	GoodsImage            string           `json:"goods_image"`
	CategoryIDS           []int64          `json:"categoryIds"`
	SpecList              []SpecGroupItem  `json:"specList"`
	SkuList               []SkuItemInfo    `json:"skuList"`
	ServiceIDS            []int64          `json:"serviceIds"`
	IsSpecLocked          bool             `json:"isSpecLocked"`
	Images                []GoodsImageInfo `json:"images"`
	Video                 interface{}      `json:"video"`
	VideoCover            interface{}      `json:"videoCover"`
	GoodsSales            int64            `json:"goods_sales"`
}

type GoodsImageInfo struct {
	ID         int64  `json:"id"`
	GoodsID    int64  `json:"goods_id"`
	ImageID    int64  `json:"image_id"`
	StoreID    int64  `json:"store_id"`
	CreateTime string `json:"create_time"`
	File       Image  `json:"file"`
}

// SpecData 商品规格数据
type SpecData struct {
	SpecList []SpecGroupItem `json:"specList"`
	SkuList  []SkuItem       `json:"skuList"`
}

type SkuItemInfo struct {
	ID          int64       `json:"id"`
	GoodsSkuID  string      `json:"goods_sku_id"`
	GoodsID     int64       `json:"goods_id"`
	ImageID     int64       `json:"image_id"`
	GoodsSkuNo  string      `json:"goods_sku_no"`
	GoodsPrice  string      `json:"goods_price"`
	LinePrice   string      `json:"line_price"`
	StockNum    int64       `json:"stock_num"`
	GoodsWeight float64     `json:"goods_weight"`
	StoreID     int64       `json:"store_id"`
	CreateTime  string      `json:"create_time"`
	UpdateTime  string      `json:"update_time"`
	Image       interface{} `json:"image"`
}

type GoodsSkuProp struct {
	Group SkuPropItem `json:"group"`
	Value SkuPropItem `json:"value"`
}

type SkuPropItem struct {
	Name string `json:"name"`
	ID   int    `json:"id"`
}

// SkuItem 商品SKU项
type SkuItem struct {
	ImageID    int64   `json:"image_id"`
	GoodsPrice float64 `json:"goods_price"`
	LinePrice  float64 `json:"line_price"`
	StockNum   int     `json:"stock_num"`
	// 规格的重量，kg
	GoodsWeight float64  `json:"goods_weight"`
	GoodsSkuNo  string   `json:"goods_sku_no"`
	TempID      string   `json:"tempId"`
	SkuKeys     []SkuKey `json:"skuKeys"`
	SpecValue0  string   `json:"spec_value_0"`
}

type SkuKey struct {
	GroupKey int `json:"groupKey"`
	ValueKey int `json:"valueKey"`
}

// SpecGroupItem 商品规格类型项
type SpecGroupItem struct {
	Key int `json:"key"`

	// SpecId 规格类型ID，编辑时需要
	SpecId int64 `json:"spec_id"`
	// SpecName 规格类型名称
	SpecName  string          `json:"spec_name"`
	ValueList []SpecValueItem `json:"valueList"`
}

// SpecValueItem 商品规格值项
type SpecValueItem struct {
	Key      int `json:"key"`
	GroupKey int `json:"groupKey"`

	// SpecValueId 规格值ID，编辑时需要
	SpecValueId int64 `json:"spec_value_id"`
	// SpecValue 规格的名称
	SpecValue string `json:"spec_value"`
}
